package com.cxc.news.dao;

import com.cxc.news.pojo.News;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface NewsDao {
    /**
     * 根据id获取新闻
     * @param id
     * @return
     */
    public News getNews(Long id);

    /**
     * 根据查询条件获取新闻列表（如果blog为空则没有条件）
     * @param news
     * @return
     */
    public List<News> getNewsByCondition(News news);

    /**
     * 保存新闻
     * @param news
     */
    public void saveNews(News news);

    /**
     * 更新新闻
     * @param news
     */
    public void updateNews(News news);

    /**
     * 删除新闻
     * @param id
     */
    public void deleteNews(Long id);

    /**
     * 查询所有新闻
     * @return
     */
    public List<News> getAllNews();

    /**
     * 获取size条最新新闻
     * @param size
     * @return
     */
    public List<News> getNewsListSize(Integer size);

    /**
     * 获取新闻总数
     * @return
     */
    public Integer getNewsNum();

    /**
     * 根据字符串来搜索符合条件的标题和内容的新闻
     * @param query
     * @return
     */
    public List<News> getNewsByStringQuery(String query);

    /**
     * 根据分类id获取新闻
     * @param typeId
     * @return
     */
    public List<News> getNewsByTypeId(Long typeId);

    /**
     * 根据年份查询新闻
     * @param year
     * @return
     */
    public List<News> findNewsByYear(String year);


    /**
     * 更新浏览数
     * @param id
     */
    public void updateViews(Long id);

    /**
     * 获取最热门的新闻
     * @param topNum
     * @return
     */
    public List<News> getTopViewsNews(Integer topNum);

    /**
     * 根据用户id获取新闻
     * @param userId
     * @return
     */
    public List<News> getNewsByUserId(Long userId);
}
